%% This document created by Scientific Word (R) Version 3.0

\documentclass[a4paper,twoside]{book}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{latexsym}
\usepackage{graphicx}
\usepackage{amsfonts}
\usepackage{amssymb}
%TCIDATA{OutputFilter=latex2.dll}
%TCIDATA{CSTFile=book.cst}
%TCIDATA{LastRevised=Wed Mar 08 15:31:39 2000}
%TCIDATA{<META NAME="GraphicsSave" CONTENT="32">}
\setlength{\oddsidemargin}{0.cm}
\setlength{\evensidemargin}{0.cm}
\setlength{\textwidth}{13.cm}
\setlength{\textheight}{16.cm}
\setlength{\parskip}{0.15cm}
\setlength{\parindent}{0.pt}
\newenvironment{linea}{
\begin{picture}(300,10)
\line(300,0){300}
\end{picture}}{ }
\newenvironment{Ej E/S}
               {\setlength{\parskip}{0.0cm}}
               {\endlist}
\newenvironment{Lista letras}
               {\list{\alph{letra}.}{
                        \usecounter{letra}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.5cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist}
\newenvironment{Programa}
               {\ttfamily\small\list{\arabic{conta}.}{\usecounter{conta}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.7cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist}
\newenvironment{Programa-cuadro}
               {\begin{lrbox}{\savepar}
                \begin{minipage}[b]{13.cm}
                \ttfamily\list{\arabic{conta}.}{\usecounter{conta}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.7cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist\end{minipage}\end{lrbox}\fbox{\usebox{\savepar}}}
\newenvironment{Lista guiones}{
     \begin{list}{-}{
     \setlength{\leftmargin}{0.5cm}
     \setlength{\labelwidth}{0.5cm}
     \setlength{\parsep}{0.pt}
     \setlength{\topsep}{0.0cm}
     \setlength{\parsep}{0.pt}
     \setlength{\itemsep}{0.pt}
     \setlength{\parskip}{0.pt}}
   }
   {\end{list}}
\newsavebox{\savepar}
\newenvironment{recuadro}{
\begin{lrbox}{\savepar}
\begin{minipage}[b]{13.cm}
}
{\end{minipage}\end{lrbox}\fbox{\usebox{\savepar}}}
\newenvironment{Solucion}{\newline \Large {\textbf {SOLUCI\'ON}}}{ }
\newcommand{\enunciado}{\Large{\textbf{ENUNCIADO}}}

\begin{document}
\newcounter{conta} \newcounter{letra} \setcounter{letra}{1}

{\Large {\textbf{ENUNCIADO}} -L21}

Para listas anidadas del tipo:

\begin{Ej E/S}
\qquad\qquad((a),(a,a,a),(a),(a,a,a,a,a));

\qquad\qquad((a),(a));
\end{Ej E/S}

Se pide:

\begin{Lista letras}
\item  Escribir una gram\'{a}tica que permita reconocer este tipo de listas.
Se debe poder reconocer una o m\'{a}s listas. Cada sublista que aparece dentro
de una lista no puede, a su vez, tener una lista anidada. A\~{n}adir atributos
a la gram\'{a}tica anterior para que permita obtener la siguiente
informaci\'{o}n de cada una de las listas que se reconozcan: menor sublista,
mayor sublista, n\'{u}mero total de sublistas. Por ejemplo, para la entra
anterior, se deber\'{i}a obtener la salida:
\end{Lista letras}

\begin{Ej E/S}
\qquad\qquad Lista 1: Tama\~{n}o de la menor sublista: 1

\qquad\qquad\qquad\qquad Tama\~{n}o de la mayor sublista: 4

\qquad\qquad\qquad\qquad Total de sublistas: 4

\qquad\qquad Lista 2: Tama\~{n}o de la menor sublista: 1

\qquad\qquad\qquad\qquad Tama\~{n}o de la mayor sublista: 1

\qquad\qquad\qquad\qquad Total de sublistas: 2
\end{Ej E/S}

\begin{Lista letras}
\item [b.]\textquestiondown De qu\'{e} tipo es la gram\'{a}tica atribuida
propuesta? Dibujar el grafo de dependencias de la sentencia: ((a),(a,a)).
Especificar un m\'{e}todo aplicable para evaluar los atributos y, seg\'{u}n
\'{e}ste tipo de an\'{a}lisis, en qu\'{e} orden se evaluar\'{i}an los atributos.
\end{Lista letras}

{\Large {\textbf{SOLUCI\'{O}N}} }

\begin{Lista letras}
\item  En la gram\'{a}tica atribuida que se propone, los s\'{i}mbolos p1, l1
representan los mismos no terminales que p y l, respectivamente; se les ha
a\~{n}adido el n\'{u}mero para poder diferenciar en las acciones de la
gram\'{a}tica a qui\'{e}n corresponde el atributo indicado.
\end{Lista letras}

\begin{Programa}
\item  prog\ :\ (l);\ \{

\item \ \ \ \ \ \ \ \ \ \ \ p.num=1;

\item \ \ \ \ \ \ \ \ \ \ \ printf(''Lista\ \%d:\ Menor\ sublista:\ \%d%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
n'',p.num,l.min);

\item \ \ \ \ \ \ \ \ \ \ \ printf(''%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
tMayor\ sublista:\ \%d%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
n'',l.max);

\item \ \ \ \ \ \ \ \ \ \ \ printf(''%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
tTotal\ sublistas:\ \%d%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
n'',l.tam);

\item \ \ \ \ \ \ \ \}

\item \ \ \ \ \ \
%TCIMACRO{\TEXTsymbol{\vert}}%
%BeginExpansion
$\vert$%
%EndExpansion
\ p1(l);\ \{

\item \ \ \ \ \ \ \ \ \ \ \ p.num=p1.num+1;

\item \ \ \ \ \ \ \ \ \ \ \ printf("Lista\ \%d:\ Menor\ sublista:\ \%d%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
n",p.num,l.min);

\item \ \ \ \ \ \ \ \ \ \ \ printf("%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
tMayor\ sublista:\ \%d%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
n",l.max);

\item \texttt{\ \ \ \ \ \ \ \ \ \ \ }printf("%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
tTotal\ sublistas:\ \%d%
%TCIMACRO{\TEXTsymbol{\backslash}}%
%BeginExpansion
$\backslash$%
%EndExpansion
n",l.tam);

\item \ \ \ \ \ \ \ \}

\item  list\ :\ (s)\ \{l.tam=1;\ l.max=s.long;\ l.min=s.long;\}

\item \ \ \ \ \ \
%TCIMACRO{\TEXTsymbol{\vert}}%
%BeginExpansion
$\vert$%
%EndExpansion
\ l1 ,\ (s)\ \{

\item \ \ \ \ \ \ \ \ \ \ \ l.tam=l1.tam+1;

\item \ \ \ \ \ \ \ \ \ \ \ l.min=min(l1.min,s.long);

\item \ \ \ \ \ \ \ \ \ \ \ l.max=max(l1.max,s.long);

\item \ \ \ \ \ \ \ \}

\item  s\ \ \ \ :\ a\ \{s.long=1;\}

\item \ \ \ \ \
%TCIMACRO{\TEXTsymbol{\vert}}%
%BeginExpansion
$\vert$%
%EndExpansion
\ s1,A \{s.long=s1.long+1;\}
\end{Programa}

\begin{Lista letras}
\item [b.]Es una gram\'{a}tica S-atribuida.\ Se puede evaluar utilizando un
an\'{a}lisis ascendente.
\end{Lista letras}
\end{document}